package com.example.qrcode.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.qrcode.entity.Product;
import com.example.qrcode.mapper.ProductMapper;
import com.example.qrcode.service.ProductService;
import com.example.qrcode.vo.ProductVO;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {

    @Resource
    private ProductMapper productMapper;

    @Override
    public ProductVO getProductWithDetail(String productSNo) {
        return productMapper.selectProductWithDetail(productSNo);
    }


    @Override
    public IPage<Product> getProductPage(Integer pageNum, Integer pageSize) {
        // 创建分页对象，MyBatis-Plus的页码从1开始
        Page<Product> page = new Page<>(pageNum, pageSize);
        // 分页查询，这里可以根据需要添加查询条件
        return baseMapper.selectPage(page, null);
    }

//    // 新增：查询在product_detail中存在的产品
//    @Override
//    public IPage<Product> getProductsWithDetail(Integer pageNum, Integer pageSize) {
//        // 1. 构建分页对象
//        IPage<Product> page = new Page<>(pageNum, pageSize);
//
//        // 2. 构建查询条件：product_s_no在product_detail表中存在
//        QueryWrapper<Product> queryWrapper = new QueryWrapper<>();
//        // 使用子查询：查询product_detail中所有的product_s_no，作为筛选条件
//        queryWrapper.inSql("product_s_no", "SELECT product_s_no FROM product_detail");
//
//        // 3. 执行分页查询（需确保ProductMapper继承BaseMapper<Product>）
//        return productMapper.selectPage(page, queryWrapper);
//    }

    public IPage<ProductVO> getProductsWithDetail(Integer pageNum, Integer pageSize) {
        Page<ProductVO> page = new Page<>(pageNum, pageSize);
        return productMapper.getProductsWithDetail(page);
    }
}
